﻿-- Author      : Kurapica
-- Create Date : 6/12/2008 1:11:28 AM

do
	-- Check Version
	local version = 1
	if not IGAS:RegisterFile("IGAS.GUI.Base.PropertyType", version) then
		return
	end

	local _Enum = IGAS.GUI.Base.Enum

	IGAS.GUI.Base.PropertyType = {
		--- Number
		["Number"] = {
			["Type"] = "number",
		},
		--- String
		["String"] = {
			["Type"] = "string",
		},
		--- Boolean
		["Boolean"] = {
			["Type"] = "boolean",
		},
		--- Function
		["Function"] = {
			["Type"] = "function",
		},
        --- List
        ["List"] = {
            ["Type"] = "list",
        },
		--- Alpha
		["Alpha"] = {
			["Type"] = "number",
			["MinValue"] = 0,
			["MaxValue"] = 1,
		},
		--- Font
		["Font"] = {
			["Type"] = "table",
			["Members"] = {
				["path"] = {
					["Type"] = "string",
				},
				["size"] = {
					["Type"] = "number",
					["MinValue"] = 0, 
				}, 
				["outline"] = {
					["Type"] = "enum",
					["EnumType"] = _Enum.OutLine, 
				},
				["monochrome"] = {
					["Type"] = "boolean",
				},
			}, 
		},
		--- FontObject
		["FontObject"] = {
			["Type"] = "enum",
			["EnumType"] = _Enum.FontObject,
		},
		--- JustifyH
		["JustifyH"] = {
			["Type"] = "enum",
			["EnumType"] = _Enum.JustifyH,
		},
		--- JustifyV
		["JustifyV"] = {
			["Type"] = "enum",
			["EnumType"] = _Enum.JustifyV,
		},
		--- Color
		["Color"] = {
			["Type"] = "table",
			["Members"] = {
				["red"] = {
					["Type"] = "number",
					["MinValue"] = 0,
					["MaxValue"] = 1, 
				}, 
				["green"] = {
					["Type"] = "number",
					["MinValue"] = 0,
					["MaxValue"] = 1, 
				}, 
				["blue"] = {
					["Type"] = "number",
					["MinValue"] = 0,
					["MaxValue"] = 1, 
				}, 
				["alpha"] = {
					["Type"] = "number",
					["MinValue"] = 0,
					["MaxValue"] = 1, 
				}, 
			},
		},
		--- Offset
		["Offset"] = {
			["Type"] = "table",
			["Members"] = {
				["x"] = {
					["Type"] = "number",
				},
				["y"] = {
					["Type"] = "number",
				}, 
			},
		},
		--- Point
		["Point"] = {
			["Type"] = "table",
			["Members"] = {
				["point"] = {
					["Type"] = "enum",
					["EnumType"] = _Enum.Point,
				},
				["frame"] = {
					["type"] = "baseForm",
				},
				["relativePoint"] = {
					["Type"] = "enum",
					["EnumType"] = _Enum.Point,
				},
				["x"] = {
					["Type"] = "number",
				},
				["y"] = {
					["Type"] = "number",
				},
			}, 
		},
		--- Layer
		["Layer"] = {
			["Type"] = "enum",
			["EnumType"] = _Enum.Layer,
		},
		--- AlphaMode
		["AlphaMode"] = {
			["Type"] = "enum",
			["EnumType"] = _Enum.AlphaMode,
		},
		--- Object
		["Object"] = {
			["Type"] = "object",
		},
		--- Texture
		["Texture"] = {
			["Type"] = "texture",
		},
		--- ButtonState
		["ButtonState"] = {
			["Type"] = "enum",
			["EnumType"] = _Enum.ButtonState,
		},
		--- ButtonState
		["InsertMode"] = {
			["Type"] = "enum",
			["EnumType"] = _Enum.InsertMode,
		},
		--- Position
		["Position"] = {
			["Type"] = "table",
			["Members"] = {
				["x"] = {
					["Type"] = "number",
				},
				["y"] = {
					["Type"] = "number",
				}, 
				["z"] = {
					["Type"] = "number",
				}, 
			},
		},
		--- Light
		["Light"] = {
			["Type"] = "table",
			["Members"] = {
				["enabled"] = {
					["Type"] = "number",
				},
				["omni"] = {
					["Type"] = "number",
				}, 
				["dirX"] = {
					["Type"] = "number",
				}, 
				["dirY"] = {
					["Type"] = "number",
				}, 
				["dirZ"] = {
					["Type"] = "number",
				}, 
				["ambIntensity"] = {
					["Type"] = "number",
				}, 
				["ambR"] = {
					["Type"] = "number",
				}, 
				["ambG"] = {
					["Type"] = "number",
				}, 
				["ambB"] = {
					["Type"] = "number",
				}, 
				["dirIntensity"] = {
					["Type"] = "number",
				}, 
				["dirR"] = {
					["Type"] = "number",
				}, 
				["dirG"] = {
					["Type"] = "number",
				}, 
				["dirB"] = {
					["Type"] = "number",
				}, 
			},
		},
		--- MinMaxValue
		["MinMaxValue"] = {
			["Type"] = "table",
			["Members"] = {
				["min"] = {
					["Type"] = "number",
				},
				["max"] = {
					["Type"] = "number",
				}, 
			},
		},		
		--- Orientation
		["Orientation"] = {
			["Type"] = "enum",
			["EnumType"] = _Enum.Orientation,
		},
		-- Direction
		["Direction"] = {
			["Type"] = "enum",
			["EnumType"] = _Enum.Direction,
		},
        -- MiniMapPosition
        ["MiniMapPosition"] = {
            ["Type"] = "table",
			["Members"] = {
				["Radius"] = {
					["Type"] = "number",
				},
				["Rounding"] = {
					["Type"] = "number",
				}, 
				["MinimapPos"] = {
					["Type"] = "number",
				}, 
			},
        },
		-- Direction
		["Anchor"] = {
			["Type"] = "enum",
			["EnumType"] = _Enum.Anchor,
		},
	}

	local _PropertyType = IGAS.GUI.Base.PropertyType
	
	-- Array
	--- PointArray
	_PropertyType["PointArray"] = {
		["Type"] = "array",
		["ArrayType"] = _PropertyType.Point,
	}

end